[INFO] fetching crate ironclad-llm 0.9.7...
[INFO] testing ironclad-llm-0.9.7 against try#b8e88e5ddf5521a9f43ee3f62a702388c713e4bb for pr-155114
[INFO] extracting crate ironclad-llm 0.9.7 into /workspace/builds/worker-6-tc2/source
[INFO] started tweaking crates.io crate ironclad-llm 0.9.7
[INFO] finished tweaking crates.io crate ironclad-llm 0.9.7
[INFO] tweaked toml for crates.io crate ironclad-llm 0.9.7 written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate ironclad-llm 0.9.7 on toolchain b8e88e5ddf5521a9f43ee3f62a702388c713e4bb
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate ironclad-llm 0.9.7 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 28e32c9b22e80024d5af9e1deb547fbaa01aa7f2094642beb1f32bc1daca70c1
[INFO] running `Command { std: "docker" "start" "-a" "28e32c9b22e80024d5af9e1deb547fbaa01aa7f2094642beb1f32bc1daca70c1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "28e32c9b22e80024d5af9e1deb547fbaa01aa7f2094642beb1f32bc1daca70c1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "28e32c9b22e80024d5af9e1deb547fbaa01aa7f2094642beb1f32bc1daca70c1", kill_on_drop: false }`
[INFO] [stdout] 28e32c9b22e80024d5af9e1deb547fbaa01aa7f2094642beb1f32bc1daca70c1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 042105d795a95b9a390339f9b2a519ec38bb2d703fcd3e2a4d6b57bfbccaba3a
[INFO] running `Command { std: "docker" "start" "-a" "042105d795a95b9a390339f9b2a519ec38bb2d703fcd3e2a4d6b57bfbccaba3a", kill_on_drop: false }`
[INFO] [stderr]    Compiling cc v1.2.56
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling socket2 v0.6.2
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]    Compiling inout v0.1.4
[INFO] [stderr]    Compiling rustls v0.23.36
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]    Compiling opaque-debug v0.3.1
[INFO] [stderr]    Compiling openssl-probe v0.2.1
[INFO] [stderr]    Compiling winnow v0.7.14
[INFO] [stderr]    Compiling toml_write v0.1.2
[INFO] [stderr]    Compiling universal-hash v0.5.1
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling cipher v0.4.4
[INFO] [stderr]    Compiling password-hash v0.5.0
[INFO] [stderr]    Compiling aead v0.5.2
[INFO] [stderr]    Compiling polyval v0.6.2
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling ghash v0.5.1
[INFO] [stderr]    Compiling ctr v0.9.2
[INFO] [stderr]    Compiling aes v0.8.4
[INFO] [stderr]    Compiling blake2 v0.10.6
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling argon2 v0.5.3
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling aes-gcm v0.10.3
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zeroize_derive v1.4.3
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling rustls-pki-types v1.14.0
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling rustls-webpki v0.103.9
[INFO] [stderr]    Compiling webpki-roots v1.0.6
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling ironclad-core v0.9.7
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling ironclad-llm v0.9.7 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 11s
[INFO] running `Command { std: "docker" "inspect" "042105d795a95b9a390339f9b2a519ec38bb2d703fcd3e2a4d6b57bfbccaba3a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "042105d795a95b9a390339f9b2a519ec38bb2d703fcd3e2a4d6b57bfbccaba3a", kill_on_drop: false }`
[INFO] [stdout] 042105d795a95b9a390339f9b2a519ec38bb2d703fcd3e2a4d6b57bfbccaba3a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] a38b83475cef16daec991c9550170cb7e671b31845d7da093cdab4e2bead51bf
[INFO] running `Command { std: "docker" "start" "-a" "a38b83475cef16daec991c9550170cb7e671b31845d7da093cdab4e2bead51bf", kill_on_drop: false }`
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling getrandom v0.4.1
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling ironclad-core v0.9.7
[INFO] [stderr]    Compiling tempfile v3.25.0
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling proptest v1.10.0
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling ironclad-llm v0.9.7 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 28.23s
[INFO] running `Command { std: "docker" "inspect" "a38b83475cef16daec991c9550170cb7e671b31845d7da093cdab4e2bead51bf", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a38b83475cef16daec991c9550170cb7e671b31845d7da093cdab4e2bead51bf", kill_on_drop: false }`
[INFO] [stdout] a38b83475cef16daec991c9550170cb7e671b31845d7da093cdab4e2bead51bf
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 4b36b69ea2792224bb950ce5d7e6c4af7f3ad01781c657ad50d1f0f3a997b1ee
[INFO] running `Command { std: "docker" "start" "-a" "4b36b69ea2792224bb950ce5d7e6c4af7f3ad01781c657ad50d1f0f3a997b1ee", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.35s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/ironclad_llm-fecf7ed7dad011b9)
[INFO] [stdout] 
[INFO] [stdout] running 325 tests
[INFO] [stdout] test accuracy::tests::tracker_record_and_query ... ok
[INFO] [stdout] test accuracy::tests::seed_from_history_respects_window ... ok
[INFO] [stdout] test accuracy::tests::tracker_unknown_model ... ok
[INFO] [stdout] test accuracy::tests::seed_from_history_populates_tracker ... ok
[INFO] [stdout] test accuracy::tests::tracker_clamp ... ok
[INFO] [stdout] test cache::tests::cache_duplicate_key_overwrites ... ok
[INFO] [stdout] test accuracy::tests::tracker_window_size ... ok
[INFO] [stdout] test cache::tests::cosine_similarity_properties ... ok
[INFO] [stdout] test accuracy::tests::tracked_models_list ... ok
[INFO] [stdout] test cache::tests::disabled_cache_ignores_import ... ok
[INFO] [stdout] test cache::tests::export_entries_produces_valid_data ... ok
[INFO] [stdout] test cache::tests::export_import_roundtrip_preserves_embeddings ... ok
[INFO] [stdout] test cache::tests::import_entries_restores_lookups ... ok
[INFO] [stdout] test cache::tests::import_skips_expired_entries ... ok
[INFO] [stdout] test cache::tests::lookup_with_embedding_uses_provided_vector ... ok
[INFO] [stdout] test cache::tests::lookup_strict_does_not_use_semantic_near_match ... ok
[INFO] [stdout] test cache::tests::ngram_embedding_properties ... ok
[INFO] [stdout] test cache::tests::lookup_with_embedding_prefers_exact ... ok
[INFO] [stdout] test cache::tests::miss_for_unknown_hash ... ok
[INFO] [stdout] test cache::tests::with_threshold_uses_custom_value ... ok
[INFO] [stdout] test capacity::tests::is_near_capacity_false_when_idle ... ok
[INFO] [stdout] test cache::tests::semantic_dissimilar_miss ... ok
[INFO] [stdout] test cache::tests::lfu_eviction_at_capacity ... ok
[INFO] [stdout] test capacity::tests::is_near_capacity_true_when_saturated ... ok
[INFO] [stdout] test capacity::tests::is_sustained_hot_false_when_idle ... ok
[INFO] [stdout] test capacity::tests::is_sustained_hot_false_for_unknown ... ok
[INFO] [stdout] test cache::tests::expiration_eviction ... ok
[INFO] [stdout] test cache::tests::multi_level_lookup_prefers_exact ... ok
[INFO] [stdout] test capacity::tests::is_sustained_hot_true_via_high_token_count ... ok
[INFO] [stdout] test capacity::tests::is_sustained_hot_false_with_high_util_low_samples ... ok
[INFO] [stdout] test capacity::tests::is_sustained_hot_true_with_high_util_enough_requests ... ok
[INFO] [stdout] test capacity::tests::is_sustained_hot_true_via_rpm_pressure ... ok
[INFO] [stdout] test capacity::tests::list_stats_empty_tracker ... ok
[INFO] [stdout] test capacity::tests::min_of_tpm_and_rpm ... ok
[INFO] [stdout] test capacity::tests::no_limits_means_full_headroom ... ok
[INFO] [stdout] test capacity::tests::record_reduces_headroom ... ok
[INFO] [stdout] test capacity::tests::record_unknown_provider_is_noop ... ok
[INFO] [stdout] test capacity::tests::rpm_limits_headroom ... ok
[INFO] [stdout] test capacity::tests::saturated_provider_zero_headroom ... ok
[INFO] [stdout] test capacity::tests::stats_near_capacity_when_saturated ... ok
[INFO] [stdout] test capacity::tests::new_tracker_has_full_headroom ... ok
[INFO] [stdout] test capacity::tests::stats_no_limits_zero_utilization ... ok
[INFO] [stdout] test capacity::tests::stats_only_rpm_limit ... ok
[INFO] [stdout] test capacity::tests::stats_only_tpm_limit ... ok
[INFO] [stdout] test cache::tests::cache_zero_capacity_still_stores_one ... ok
[INFO] [stdout] test capacity::tests::list_stats_multiple_providers ... ok
[INFO] [stdout] test cascade::tests::expected_utility_no_data ... ok
[INFO] [stdout] test cascade::tests::high_success_rate_favors_cascade ... ok
[INFO] [stdout] test cascade::tests::low_success_rate_favors_direct ... ok
[INFO] [stdout] test cascade::tests::query_classes_listed ... ok
[INFO] [stdout] test cascade::tests::strategy_display ... ok
[INFO] [stdout] test cascade::tests::window_eviction ... ok
[INFO] [stdout] test circuit::tests::capacity_pressure_sets_half_open_without_blocking ... ok
[INFO] [stdout] test circuit::tests::credit_error_clears_on_manual_reset ... ok
[INFO] [stdout] test circuit::tests::credit_error_immediate_trip ... ok
[INFO] [stdout] test cascade::tests::unknown_class_defaults ... ok
[INFO] [stdout] test circuit::tests::credit_error_never_auto_recovers ... ok
[INFO] [stdout] test circuit::tests::half_open_failure_doubles_cooldown ... ok
[INFO] [stdout] test circuit::tests::force_open_blocks_and_stays_open ... ok
[INFO] [stdout] test circuit::tests::normal_operation ... ok
[INFO] [stdout] test circuit::tests::reset_clears_state ... ok
[INFO] [stdout] test circuit::tests::transient_failure_still_auto_recovers ... ok
[INFO] [stdout] test circuit::tests::trip_on_threshold ... ok
[INFO] [stdout] test client::tests::auth_value_formatting ... ok
[INFO] [stdout] test cache::tests::proptest_cosine_similarity_bounded_for_nonneg ... ok
[INFO] [stdout] test cache::tests::cosine_self_similarity_is_one ... ok
[INFO] [stdout] test cache::tests::semantic_similarity_finds_near_matches ... ok
[INFO] [stdout] test cache::tests::store_and_exact_hit ... ok
[INFO] [stdout] test cache::tests::tool_ttl_shorter_than_normal ... ok
[INFO] [stdout] test capacity::tests::stats_reflects_usage ... ok
[INFO] [stdout] test capacity::tests::stats_returns_correct_values_idle ... ok
[INFO] [stdout] test capacity::tests::stats_returns_none_for_unknown_provider ... ok
[INFO] [stdout] test capacity::tests::stats_utilization_clamped_to_one ... ok
[INFO] [stdout] test capacity::tests::unknown_provider_full_headroom ... ok
[INFO] [stdout] test accuracy::tests::seed_from_history_empty ... ok
[INFO] [stdout] test client::tests::pct_encode_all_bytes ... ok
[INFO] [stdout] test client::tests::pct_encode_ampersand_equals ... ok
[INFO] [stdout] test client::tests::pct_encode_empty_string ... ok
[INFO] [stdout] test client::tests::pct_encode_slash_colon ... ok
[INFO] [stdout] test client::tests::pct_encode_spaces_and_special ... ok
[INFO] [stdout] test client::tests::pct_encode_unreserved_chars_pass_through ... ok
[INFO] [stdout] test client::tests::request_body_is_valid_json ... ok
[INFO] [stdout] test compression::tests::compress_empty_string ... ok
[INFO] [stdout] test compression::tests::compress_keeps_content_words ... ok
[INFO] [stdout] test compression::tests::compress_preserves_order ... ok
[INFO] [stdout] test compression::tests::compress_ratio_clamped ... ok
[INFO] [stdout] test compression::tests::compress_ratio_one_no_change ... ok
[INFO] [stdout] test compression::tests::compress_reduces_tokens ... ok
[INFO] [stdout] test circuit::tests::recovery_after_cooldown ... ok
[INFO] [stdout] test compression::tests::content_word_detection ... ok
[INFO] [stdout] test compression::tests::estimate_savings ... ok
[INFO] [stdout] test compression::tests::estimate_savings_empty ... ok
[INFO] [stdout] test compression::tests::short_input_no_compression ... ok
[INFO] [stdout] test compression::tests::stop_word_detection ... ok
[INFO] [stdout] test dedup::tests::different_models_different_fingerprints ... ok
[INFO] [stdout] test dedup::tests::duplicate_detected ... ok
[INFO] [stdout] test dedup::tests::release_allows_retrack ... ok
[INFO] [stdout] test dedup::tests::unique_request_tracked ... ok
[INFO] [stdout] test embedding::tests::build_embedding_url_google_batch_uses_batch_endpoint ... ok
[INFO] [stdout] test embedding::tests::build_embedding_url_google_substitutes_model ... ok
[INFO] [stdout] test embedding::tests::build_embedding_url_non_google ... ok
[INFO] [stdout] test embedding::tests::build_embedding_url_openai ... ok
[INFO] [stdout] test embedding::tests::build_embedding_url_query_auth ... ok
[INFO] [stdout] test embedding::tests::build_google_request_batch ... ok
[INFO] [stdout] test dedup::tests::expired_entries_evicted ... ok
[INFO] [stdout] test cache::tests::proptest_cosine_similarity_is_commutative ... ok
[INFO] [stdout] test embedding::tests::build_google_request_single ... ok
[INFO] [stdout] test embedding::tests::build_openai_request ... ok
[INFO] [stdout] test cache::tests::proptest_ngram_embedding_has_fixed_dimension ... ok
[INFO] [stdout] test cache::tests::proptest_ngram_embedding_is_deterministic ... ok
[INFO] [stdout] test client::tests::forward_with_provider_extra_headers_propagated ... ok
[INFO] [stdout] test embedding::tests::fallback_ngram_deterministic ... ok
[INFO] [stdout] test embedding::tests::fallback_ngram_different_dims ... ok
[INFO] [stdout] test embedding::tests::fallback_ngram_empty ... ok
[INFO] [stdout] test embedding::tests::fallback_ngram_short_text ... ok
[INFO] [stdout] test embedding::tests::fallback_ngram_unit_normalized ... ok
[INFO] [stdout] test embedding::tests::client_without_provider ... ok
[INFO] [stdout] test client::tests::client_construction ... ok
[INFO] [stdout] test embedding::tests::parse_google_batch_response ... ok
[INFO] [stdout] test embedding::tests::parse_google_single_response ... ok
[INFO] [stdout] test client::tests::forward_with_query_auth_existing_params ... ok
[INFO] [stdout] test embedding::tests::parse_google_unparseable_returns_error ... ok
[INFO] [stdout] test embedding::tests::parse_ollama_response ... ok
[INFO] [stdout] test embedding::tests::parse_openai_mismatched_count_returns_error ... ok
[INFO] [stdout] test embedding::tests::parse_unparseable_returns_error ... ok
[INFO] [stdout] test eval_harness::tests::replay_accuracy_floor_filters ... ok
[INFO] [stdout] test eval_harness::tests::replay_empty_input ... ok
[INFO] [stdout] test eval_harness::tests::replay_no_candidates_returns_none ... ok
[INFO] [stdout] test eval_harness::tests::replay_respects_cost_weight ... ok
[INFO] [stdout] test eval_harness::tests::replay_single_row ... ok
[INFO] [stdout] test embedding::tests::parse_openai_response ... ok
[INFO] [stdout] test embedding::tests::client_with_provider ... ok
[INFO] [stdout] test eval_harness::tests::replay_skips_blocked_candidates ... ok
[INFO] [stdout] test eval_harness::tests::summarize_computes_deltas ... ok
[INFO] [stdout] test embedding::tests::parse_google_mismatched_count_returns_error ... ok
[INFO] [stdout] test eval_harness::tests::summarize_empty ... ok
[INFO] [stdout] test format::tests::content_part_image_base64_to_text ... ok
[INFO] [stdout] test format::tests::content_part_image_url_to_text ... ok
[INFO] [stdout] test format::tests::content_part_audio_to_text ... ok
[INFO] [stdout] test format::tests::content_part_text_to_text ... ok
[INFO] [stdout] test embedding::tests::embed_single_without_provider ... ok
[INFO] [stdout] test format::tests::is_multimodal_false_with_text_only_parts ... ok
[INFO] [stdout] test format::tests::parse_anthropic_response_empty_content ... ok
[INFO] [stdout] test format::tests::parse_anthropic_response_missing_usage ... ok
[INFO] [stdout] test format::tests::parse_google_response_function_call_only ... ok
[INFO] [stdout] test format::tests::image_url_detail_passed_through_openai ... ok
[INFO] [stdout] test format::tests::parse_google_response_with_function_call ... ok
[INFO] [stdout] test format::tests::parse_google_response_multiple_function_calls ... ok
[INFO] [stdout] test format::tests::parse_google_response_no_candidates ... ok
[INFO] [stdout] test format::tests::parse_openai_response_no_choices_errors ... ok
[INFO] [stdout] test format::tests::parse_openai_responses_empty_output ... ok
[INFO] [stdout] test format::tests::parse_openai_responses_function_call_only ... ok
[INFO] [stdout] test format::tests::parse_openai_responses_multiple_function_calls ... ok
[INFO] [stdout] test format::tests::parse_openai_responses_with_function_call ... ok
[INFO] [stdout] test format::tests::parse_sse_anthropic_chunk ... ok
[INFO] [stdout] test format::tests::parse_sse_anthropic_no_text_returns_empty ... ok
[INFO] [stdout] test format::tests::parse_sse_anthropic_with_stop_reason ... ok
[INFO] [stdout] test format::tests::parse_sse_anthropic_missing_delta_returns_none ... ok
[INFO] [stdout] test format::tests::parse_sse_done_for_all_formats ... ok
[INFO] [stdout] test format::tests::parse_sse_done_returns_none ... ok
[INFO] [stdout] test format::tests::parse_sse_google_chunk ... ok
[INFO] [stdout] test format::tests::parse_sse_google_missing_candidates_returns_none ... ok
[INFO] [stdout] test format::tests::parse_sse_google_no_text_returns_empty ... ok
[INFO] [stdout] test format::tests::parse_sse_invalid_json_returns_none ... ok
[INFO] [stdout] test format::tests::parse_sse_non_data_line_returns_none ... ok
[INFO] [stdout] test format::tests::parse_sse_openai_chunk ... ok
[INFO] [stdout] test format::tests::parse_sse_openai_null_content_returns_empty_delta ... ok
[INFO] [stdout] test format::tests::parse_sse_openai_responses_format ... ok
[INFO] [stdout] test format::tests::parts_to_anthropic_audio_becomes_text ... ok
[INFO] [stdout] test format::tests::parts_to_anthropic_mixed_all_types ... ok
[INFO] [stdout] test format::tests::parts_to_anthropic_base64_image ... ok
[INFO] [stdout] test format::tests::parts_to_anthropic_url_image ... ok
[INFO] [stdout] test format::tests::parts_to_openai_audio_becomes_text ... ok
[INFO] [stdout] test format::tests::parse_sse_openai_with_finish_reason ... ok
[INFO] [stdout] test format::tests::parts_to_openai_base64_image ... ok
[INFO] [stdout] test format::tests::parts_to_openai_mixed_all_types ... ok
[INFO] [stdout] test format::tests::parts_to_openai_text_only ... ok
[INFO] [stdout] test client::tests::forward_stream_bearer_auth ... ok
[INFO] [stdout] test format::tests::parts_to_openai_with_image ... ok
[INFO] [stdout] test format::tests::stream_accumulator_captures_model ... ok
[INFO] [stdout] test format::tests::stream_accumulator_captures_tokens_from_last ... ok
[INFO] [stdout] test format::tests::stream_accumulator_pushes_deltas ... ok
[INFO] [stdout] test format::tests::stream_chunk_serialization_roundtrip ... ok
[INFO] [stdout] test format::tests::translate_anthropic_no_max_tokens ... ok
[INFO] [stdout] test format::tests::translate_anthropic_system_from_message_when_no_system_field ... ok
[INFO] [stdout] test format::tests::translate_google_includes_tools ... ok
[INFO] [stdout] test format::tests::translate_google_no_gen_config_fields ... ok
[INFO] [stdout] test format::tests::translate_google_filters_system_messages ... ok
[INFO] [stdout] test format::tests::translate_google_skips_empty_assistant_messages ... ok
[INFO] [stdout] test format::tests::translate_openai_multimodal_message ... ok
[INFO] [stdout] test format::tests::translate_openai_no_system_no_max_tokens_no_temp ... ok
[INFO] [stdout] test format::tests::translate_openai_responses_includes_tools ... ok
[INFO] [stdout] test format::tests::translate_openai_responses_no_max_tokens ... ok
[INFO] [stdout] test format::tests::translate_openai_responses_skips_empty_assistant_messages ... ok
[INFO] [stdout] test format::tests::translate_openai_skips_empty_assistant_messages ... ok
[INFO] [stdout] test format::tests::translate_request_google ... ok
[INFO] [stdout] test format::tests::translate_request_openai_completions ... ok
[INFO] [stdout] test format::tests::translate_anthropic_multimodal_message ... ok
[INFO] [stdout] test format::tests::translate_request_anthropic ... ok
[INFO] [stdout] test format::tests::stream_accumulator_empty ... ok
[INFO] [stdout] test client::tests::forward_request_connection_refused_maps_to_network_error ... ok
[INFO] [stdout] test format::tests::translate_request_openai_responses ... ok
[INFO] [stdout] test format::tests::unified_message_is_multimodal_false_for_text ... ok
[INFO] [stdout] test format::tests::unified_message_is_multimodal_true_with_image ... ok
[INFO] [stdout] test format::tests::unified_message_multimodal_helper ... ok
[INFO] [stdout] test format::tests::unified_message_text_helper ... ok
[INFO] [stdout] test embedding::tests::parse_f32_array_handles_non_numbers ... ok
[INFO] [stdout] test format::tests::parse_sse_openai_missing_content_returns_empty_delta ... ok
[INFO] [stdout] test format::tests::translate_response_anthropic ... ok
[INFO] [stdout] test format::tests::translate_response_google ... ok
[INFO] [stdout] test format::tests::translate_response_openai_responses ... ok
[INFO] [stdout] test format::tests::translate_response_openai_completions ... ok
[INFO] [stdout] test ml_router::tests::classify_positive_bias ... ok
[INFO] [stdout] test ml_router::tests::classify_with_zero_weights ... ok
[INFO] [stdout] test ml_router::tests::preference_record_conversion ... ok
[INFO] [stdout] test format::tests::unified_request_serialization_roundtrip ... ok
[INFO] [stdout] test format::tests::unified_response_serialization_roundtrip ... ok
[INFO] [stdout] test ml_router::tests::backend_trait_implementation ... ok
[INFO] [stdout] test ml_router::tests::train_empty_examples ... ok
[INFO] [stdout] test ml_router::tests::classify_feature_sensitive ... ok
[INFO] [stdout] test ml_router::tests::sigmoid_bounds ... ok
[INFO] [stdout] test ml_router::tests::weights_accessor ... ok
[INFO] [stdout] test oauth::tests::authorization_url_encodes_special_chars_in_client_id ... ok
[INFO] [stdout] test oauth::tests::authorization_url_encodes_state ... ok
[INFO] [stdout] test oauth::tests::authorization_url_structure ... ok
[INFO] [stdout] test oauth::tests::base64url_encode_roundtrip ... ok
[INFO] [stdout] test oauth::tests::callback_port_returns_constant ... ok
[INFO] [stdout] test oauth::tests::code_challenge_is_sha256_base64url ... ok
[INFO] [stdout] test oauth::tests::code_verifier_is_base64url ... ok
[INFO] [stdout] test oauth::tests::code_verifiers_are_unique ... ok
[INFO] [stdout] test ml_router::tests::train_learns_separation ... ok
[INFO] [stdout] test oauth::tests::default_redirect_uri_contains_port ... ok
[INFO] [stdout] test oauth::tests::different_verifiers_produce_different_challenges ... ok
[INFO] [stdout] test ml_router::tests::preference_collector ... ok
[INFO] [stdout] test ml_router::tests::load_missing_file ... ok
[INFO] [stdout] test ml_router::tests::load_invalid_file ... ok
[INFO] [stdout] test ml_router::tests::save_and_load ... ok
[INFO] [stdout] test client::tests::forward_with_query_auth_encodes_special_chars_in_key ... ok
[INFO] [stdout] test embedding::tests::embed_without_provider_uses_ngram ... ok
[INFO] [stdout] test client::tests::forward_with_provider_authorization_case_insensitive ... ok
[INFO] [stdout] test client::tests::forward_stream_connection_refused ... ok
[INFO] [stdout] test client::tests::forward_stream_custom_auth_header ... ok
[INFO] [stdout] test client::tests::forward_with_query_auth_no_existing_params ... ok
[INFO] [stdout] test oauth::tests::stored_tokens_client_id_present_when_some ... ok
[INFO] [stdout] test oauth::tests::stored_tokens_client_id_skipped_when_none ... ok
[INFO] [stdout] test oauth::tests::token_file_backward_compat_no_client_id ... ok
[INFO] [stdout] test oauth::tests::token_file_empty_tokens ... ok
[INFO] [stdout] test oauth::tests::token_file_multiple_providers ... ok
[INFO] [stdout] test oauth::tests::token_file_path_contains_ironclad ... ok
[INFO] [stdout] test oauth::tests::token_file_roundtrip ... ok
[INFO] [stdout] test oauth::tests::token_url_is_anthropic ... ok
[INFO] [stdout] test profile::tests::metascore_all_blocked ... ok
[INFO] [stdout] test profile::tests::metascore_blocked_model_filtered ... ok
[INFO] [stdout] test profile::tests::metascore_breakdown_components_bounded ... ok
[INFO] [stdout] test profile::tests::metascore_cloud_complex_task ... ok
[INFO] [stdout] test profile::tests::metascore_cold_start_penalty ... ok
[INFO] [stdout] test profile::tests::metascore_cost_aware_prefers_cheap ... ok
[INFO] [stdout] test profile::tests::metascore_deterministic_tiebreak ... ok
[INFO] [stdout] test profile::tests::metascore_empty_profiles ... ok
[INFO] [stdout] test profile::tests::metascore_local_simple_task ... ok
[INFO] [stdout] test provider::tests::config_format_overrides_inference ... ok
[INFO] [stdout] test provider::tests::from_config_maps_tiers_and_formats ... ok
[INFO] [stdout] test provider::tests::lookup_by_model_string ... ok
[INFO] [stdout] test provider::tests::parse_api_format_variants ... ok
[INFO] [stdout] test provider::tests::parse_tier_variants ... ok
[INFO] [stdout] test provider::tests::register_and_lookup ... ok
[INFO] [stdout] test router::tests::advance_through_fallbacks ... ok
[INFO] [stdout] test router::tests::complexity_classification ... ok
[INFO] [stdout] test router::tests::model_override_takes_precedence ... ok
[INFO] [stdout] test router::tests::select_primary_model ... ok
[INFO] [stdout] test embedding::tests::embed_with_unreachable_provider_falls_back ... ok
[INFO] [stdout] test client::tests::forward_with_provider_custom_auth_connection_refused ... ok
[INFO] [stdout] test tests::resolve_embedding_config_default_dimensions ... ok
[INFO] [stdout] test tests::resolve_embedding_config_falls_back_to_provider_model ... ok
[INFO] [stdout] test tests::resolve_embedding_config_missing_provider ... ok
[INFO] [stdout] test tests::resolve_embedding_config_no_provider ... ok
[INFO] [stdout] test tests::resolve_embedding_config_provider_no_embedding_path ... ok
[INFO] [stdout] test tests::resolve_embedding_config_uses_memory_model_override ... ok
[INFO] [stdout] test tests::sse_chunk_stream_anthropic_format ... ok
[INFO] [stdout] test tests::sse_chunk_stream_buffer_overflow_error ... ok
[INFO] [stdout] test tests::sse_chunk_stream_empty_buffer_at_end ... ok
[INFO] [stdout] test tests::sse_chunk_stream_empty_bytes ... ok
[INFO] [stdout] test tests::sse_chunk_stream_empty_input ... ok
[INFO] [stdout] test tests::sse_chunk_stream_google_format ... ok
[INFO] [stdout] test tests::sse_chunk_stream_multiple_lines_in_one_chunk ... ok
[INFO] [stdout] test tests::sse_chunk_stream_multiple_trailing_chunks ... ok
[INFO] [stdout] test tests::sse_chunk_stream_non_data_lines_skipped ... ok
[INFO] [stdout] test tests::sse_chunk_stream_only_whitespace_lines ... ok
[INFO] [stdout] test tests::sse_chunk_stream_pending_queue_drains_correctly ... ok
[INFO] [stdout] test tests::sse_chunk_stream_split_across_boundaries ... ok
[INFO] [stdout] test tests::sse_chunk_stream_split_utf8_boundary ... ok
[INFO] [stdout] test tests::sse_chunk_stream_trailing_data_no_newline ... ok
[INFO] [stdout] test tests::sse_chunk_stream_trailing_done_not_lost ... ok
[INFO] [stdout] test tier::tests::classify_known_models ... ok
[INFO] [stdout] test tier::tests::t1_config_disables_strip_and_condense ... ok
[INFO] [stdout] test tier::tests::t1_strips_system_and_condenses ... ok
[INFO] [stdout] test tier::tests::t2_adds_preamble ... ok
[INFO] [stdout] test tier::tests::t2_custom_preamble ... ok
[INFO] [stdout] test tier::tests::t2_no_preamble_when_none ... ok
[INFO] [stdout] test tier::tests::t3_t4_passthrough ... ok
[INFO] [stdout] test tiered::tests::escalation_tracker_basic ... ok
[INFO] [stdout] test tiered::tests::escalation_tracker_cache_hit_rate ... ok
[INFO] [stdout] test tiered::tests::escalation_tracker_empty_rates ... ok
[INFO] [stdout] test tiered::tests::escalation_tracker_rates ... ok
[INFO] [stdout] test tiered::tests::evaluator_empty_response ... ok
[INFO] [stdout] test tiered::tests::evaluator_floor_accessor ... ok
[INFO] [stdout] test tiered::tests::evaluator_high_confidence ... ok
[INFO] [stdout] test tiered::tests::evaluator_low_confidence_hedging ... ok
[INFO] [stdout] test tiered::tests::evaluator_low_confidence_short ... ok
[INFO] [stdout] test tiered::tests::tiered_result_display ... ok
[INFO] [stdout] test tests::llm_service_construction ... ok
[INFO] [stdout] test tests::llm_service_with_embedding_provider ... ok
[INFO] [stdout] test oauth::tests::oauth_manager_new_with_no_file ... ok
[INFO] [stdout] test oauth::tests::oauth_manager_resolve_missing_provider ... ok
[INFO] [stdout] test oauth::tests::oauth_manager_remove_nonexistent ... ok
[INFO] [stdout] test oauth::tests::resolve_token_no_expiry_returns_access_token ... ok
[INFO] [stdout] test oauth::tests::status_not_expired_when_future ... ok
[INFO] [stdout] test oauth::tests::oauth_manager_store_and_resolve ... ok
[INFO] [stdout] test oauth::tests::resolve_token_expired_no_refresh_token_errors ... ok
[INFO] [stdout] test oauth::tests::resolve_token_expired_attempts_refresh_fails_network ... ok
[INFO] [stdout] test oauth::tests::status_empty_access_token_reports_false ... ok
[INFO] [stdout] test oauth::tests::oauth_manager_status_reports_expiry ... ok
[INFO] [stdout] test oauth::tests::resolve_token_about_to_expire_attempts_refresh ... ok
[INFO] [stdout] test oauth::tests::resolve_token_not_expired_returns_access_token has been running for over 60 seconds
[INFO] [stdout] test oauth::tests::store_tokens_overwrites_existing has been running for over 60 seconds
[INFO] [stdout] test oauth::tests::resolve_token_not_expired_returns_access_token ... ok
[INFO] [stdout] test oauth::tests::store_tokens_overwrites_existing ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 325 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 64.49s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests ironclad_llm
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "4b36b69ea2792224bb950ce5d7e6c4af7f3ad01781c657ad50d1f0f3a997b1ee", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4b36b69ea2792224bb950ce5d7e6c4af7f3ad01781c657ad50d1f0f3a997b1ee", kill_on_drop: false }`
[INFO] [stdout] 4b36b69ea2792224bb950ce5d7e6c4af7f3ad01781c657ad50d1f0f3a997b1ee
